/**
 * 笔记数据接口
 */
export interface Note {
  /** 笔记唯一标识符 */
  id: string
  /** 笔记标题 */
  title: string
  /** 笔记内容 (HTML格式) */
  content: string
  /** 创建时间 */
  createdAt: Date
  /** 更新时间 */
  updatedAt: Date
  /** 标签列表 */
  tags?: string[]
  /** 分类 */
  category?: string
  /** 是否收藏 */
  isFavorite?: boolean
  /** 笔记摘要 (自动生成) */
  summary?: string
  /** 字数统计 */
  wordCount?: number
}

/**
 * 创建笔记时的参数接口
 */
export interface CreateNoteParams {
  title: string
  content: string
  tags?: string[]
  category?: string
}

/**
 * 更新笔记时的参数接口
 */
export interface UpdateNoteParams {
  title?: string
  content?: string
  tags?: string[]
  category?: string
  isFavorite?: boolean
}

/**
 * 笔记搜索参数接口
 */
export interface SearchNoteParams {
  /** 搜索关键词 */
  query?: string
  /** 标签筛选 */
  tags?: string[]
  /** 分类筛选 */
  category?: string
  /** 是否只显示收藏 */
  favoriteOnly?: boolean
  /** 排序方式 */
  sortBy?: 'createdAt' | 'updatedAt' | 'title'
  /** 排序方向 */
  sortOrder?: 'asc' | 'desc'
}

/**
 * 笔记统计信息接口
 */
export interface NoteStats {
  /** 总笔记数 */
  totalNotes: number
  /** 总字数 */
  totalWords: number
  /** 收藏笔记数 */
  favoriteNotes: number
  /** 分类统计 */
  categoryStats: Record<string, number>
  /** 标签统计 */
  tagStats: Record<string, number>
}

/**
 * 存储键名常量
 */
export const STORAGE_KEYS = {
  /** 笔记数据 */
  NOTES: 'web-notes:notes',
  /** 用户设置 */
  SETTINGS: 'web-notes:settings',
  /** 搜索历史 */
  SEARCH_HISTORY: 'web-notes:search-history',
  /** 最近编辑的笔记ID */
  LAST_EDITED_NOTE: 'web-notes:last-edited-note'
} as const

/**
 * 默认设置接口
 */
export interface AppSettings {
  /** 自动保存间隔 (毫秒) */
  autoSaveInterval: number
  /** 是否启用自动保存 */
  enableAutoSave: boolean
  /** 默认编辑器高度 */
  editorHeight: string
  /** 主题设置 */
  theme: 'light' | 'dark' | 'auto'
  /** 字体大小 */
  fontSize: number
  /** 是否显示字数统计 */
  showWordCount: boolean
}

/**
 * 默认应用设置
 */
export const DEFAULT_SETTINGS: AppSettings = {
  autoSaveInterval: 3000, // 3秒
  enableAutoSave: true,
  editorHeight: '500px',
  theme: 'light',
  fontSize: 14,
  showWordCount: true
} 